package com.atguigu.gmall.cart.service;

import com.atguigu.gmall.model.cart.CartInfo;
import com.atguigu.gmall.model.product.SkuInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author dyqstart
 * @create 2021-08-17-19:02
 * @since 1.0.0
 */
public interface CartService {

    /**
     * 根据请求带来的信息，决定使用登录用户的购物车还是临时购物车
     * @param request
     * @return
     */
    String determinCartKey(HttpServletRequest request);

    /**
     * 获取用户购物车的Key
     * @param request
     * @return
     */
    String userCartKey(HttpServletRequest request);

    /**
     * 获取临时购物车的Key
     * @param request
     * @return
     */
    String tempCartKey(HttpServletRequest request);

    /**
     * 给购物车中添加指定的商品
     * @param key
     * @param skuId
     * @param skuNum
     * @return
     */
    CartInfo addToCart(String key, Long skuId, Integer skuNum);


    List<CartInfo> listCart(String userKey,String userTempKey);

    /**
     * 清空临时购物车
     * @param key
     */
    void clearCart(String key);

    /**
     * 购物车商品选中
     * @param key
     * @param skuId
     * @param checked
     */
    void checkCartItem(String key, Long skuId, Integer checked);

    void deleteCartItem(String key, Long skuId);


    List<CartInfo> listCheckCartInfo(String key);
}
